package dto

// RedPacketAccountResp 红包账户信息响应
type RedPacketAccountResp struct {
	Balance      float64 `json:"balance"`       // 红包余额
	TotalIncome  float64 `json:"total_income"`  // 累计收入
	TotalExpense float64 `json:"total_expense"` // 累计支出
}

// RedPacketRecordItem 红包流水记录项
type RedPacketRecordItem struct {
	Id         int64   `json:"id"`          // 流水ID
	Type       int     `json:"type"`        // 类型:1收入 2支出
	Amount     float64 `json:"amount"`      // 金额
	Balance    float64 `json:"balance"`     // 变动后余额
	Source     string  `json:"source"`      // 来源
	Title      string  `json:"title"`       // 流水标题
	Remark     string  `json:"remark"`      // 备注
	Status     int     `json:"status"`      // 状态:1正常 2已退回
	ExpireTime string  `json:"expire_time"` // 过期时间
	CreateTime string  `json:"create_time"` // 创建时间
}

// ListRedPacketRecordReq 红包流水记录列表请求
type ListRedPacketRecordReq struct {
	Page     int `form:"page" binding:"required,min=1"`             // 页码
	PageSize int `form:"page_size" binding:"required,min=1,max=50"` // 每页大小
}

// ListRedPacketRecordResp 红包流水记录列表响应
type ListRedPacketRecordResp struct {
	Total    int64                 `json:"total"`     // 总数
	List     []RedPacketRecordItem `json:"list"`      // 记录列表
	Page     int                   `json:"page"`      // 当前页码
	PageSize int                   `json:"page_size"` // 每页大小
}

// UseRedPacketReq 使用红包请求
type UseRedPacketReq struct {
	Amount float64 `json:"amount" binding:"required,min=0.01"` // 使用金额
	Source string  `json:"source" binding:"required"`          // 使用场景
	Title  string  `json:"title" binding:"required"`           // 流水标题
	Remark string  `json:"remark"`                             // 备注
}

// RefundRedPacketReq 退回红包请求
type RefundRedPacketReq struct {
	RecordId int64  `json:"record_id" binding:"required"` // 流水记录ID
	Remark   string `json:"remark"`                       // 退回原因
}

// SendRedPacketReq 发放红包请求
type SendRedPacketReq struct {
	UserId     int64   `json:"user_id" binding:"required"` // 用户ID
	Source     string  `json:"source" binding:"required"`  // 红包来源
	BaseAmount float64 `json:"base_amount"`                // 基础金额(比例红包时必填)
	Title      string  `json:"title" binding:"required"`   // 流水标题
	Remark     string  `json:"remark"`                     // 备注
	ValidDays  int     `json:"valid_days"`                 // 有效期(天)
}

// SendRedPacketResp 发放红包响应
type SendRedPacketResp struct {
	Amount float64 `json:"amount"` // 发放金额
}
